1
Hiệu suất và Tính Biểu đạt của C++ Hiện đại
AI013Lesson 3
00:00

C++ hiện đại (C++11/14/17) giới thiệu Các trừu tượng không chi phí những trừu tượng giúp lấp đầy khoảng cách giữa việc kiểm soát phần cứng cấp thấp và tính dễ đọc ở cấp cao. Hiệu suất được đạt được nhờ quản lý bộ nhớ xác định, trong khi tính biểu đạt được nâng cao thông qua lập trình thời gian biên dịch.

1. Cấu trúc Bộ nhớ: std::array so với std::vector

std::array là một bao bọc hiện đại cho mảng kiểu C, được phân bổ trên ngăn xếp với kích thước cố định được biết trước khi biên dịch. Ngược lại, std::vector nằm trên đống và tăng kích thước một cách động. Trong khi std::vector sử dụng hệ số tăng trưởng hình học (thường là $1.5\times$ hoặc $2\times$), C++ hiện đại cung cấp shrink_to_fit() để thu hồi dung lượng không sử dụng, mang lại khả năng kiểm soát chặt chẽ hơn so với các ngôn ngữ được quản lý như Golang.

2. SFINAE và An Toàn Kiểu Dữ Liệu

Thông qua std::enable_ifstd::is_enum, các nhà phát triển có thể triển khai Thay thế thất bại không phải là lỗi (SFINAE). Điều này cho phép trình biên dịch chọn các hàm quá tải cụ thể dựa trên thuộc tính kiểu dữ liệu tại thời điểm biên dịch, ví dụ như tạo ra toán tử luồng phổ quát cho các kiểu liệt kê bằng cách sử dụng std::underlying_type.

// Những Điểm Nổi Bật về Quản Lý Bộ Nhớ trong C++11
v.push_back(std::move(obj)); // Cơ chế di chuyển
arr.at(0); // Kiểm tra giới hạn
main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>